import axios from 'axios';

// const fs = require('fs');
// const AdmZip = require('adm-zip');

/* import fs from 'fs';
import * as AdmZip from 'adm-zip'; */


import config from '../../../mp.config.js'

console.log("config:",config)

import { refreshToken } from '../../../utils'

//下载文件
export function downFile(appId) {
	return new Promise((resolve, reject) => {
        let token = localStorage.getItem('token');
        window.electron.ipcRenderer.send('down-file', { url:config.route.downsource, appId,token });
        window.electron.ipcRenderer.on('down-file-success', () => {
            resolve();
        })
        window.electron.ipcRenderer.on('refresh-token', async () => {
            //刷新token
            token = await refreshToken(token);
            //重新请求
            window.electron.ipcRenderer.send('down-file', { url:config.route.downsource, appId,token,noRefetch:true });
        })
        
        /*
        let data={appId:appId};
        return axios({url,method:'POST',data,responseType: 'arraybuffer',
            // headers: {'X-Token': localStorage.getItem('token') || '', },
        }).then(res => {
            const str = res.headers['content-disposition']
            if (!res || !str) {
                error(res.message || '下载失败！')
                return
            }
            if (res && res.status === 200 && res.data) {
                // 保存文件的本地路径
                const localFilePath = 'apps/'+appId+'.zip';
                // 将 arraybuffer 转换为 Buffer
                // const buffer = Buffer.from(res.data, 'binary');

                // 将 Buffer 写入文件
                // fs.writeFileSync(localFilePath, buffer);

                // 解压 ZIP 文件
                // unzipFile(localFilePath, 'apps/'+appId);
                
                resolve()
                
            } else {
                error(res.message || '下载失败！')
            }
        })
        .catch(err => {
            error(err || '下载失败！')
        })*/
        
	});
}

/**
 * 解压文件
 * @param {*} localFilePath 本地文件路径
 * @param {*} extractPath 解压路径
 */
function unzipFile(localFilePath, extractPath) {
    
    // 确保目标目录存在
    if (!fs.existsSync(extractPath)) {
        fs.mkdirSync(extractPath, { recursive: true });
    }

    // 创建一个新的 AdmZip 实例
    const zip = new AdmZip(localFilePath);

    // 解压 ZIP 文件到指定目录
    zip.extractAllTo(extractPath, true);
}

//读取配置文件
export function readConfigFile(currProjectPath,appId) {
	return new Promise((resolve, reject) => {
        // let result=fs.readFileSync('apps/'+appId+'/compileResult.json', 'utf-8')
        // resolve(result);
        
        window.electron.ipcRenderer.send('read-config-file',{currProjectPath,appId});
        window.electron.ipcRenderer.on('config-info', (_event, configInfo) => {
            resolve(configInfo);
        });
    });
}

//读取文件
export function readFile(filePath) {
	return new Promise((resolve, reject) => {
		axios.get('http://local.mp.cn/sourcePackages/' + filePath, {responseType: 'text'}).then((res) => {
			resolve(res.data);
		});
	});
}

/**
 * 合并页面配置
 * @param {*} appConfig 全局配置
 * @param {*} pageConfig 页面配置
 * @returns 
 */
export function mergePageConfig(appConfig,pageConfig){
    const result={};
    const appWindowConfig=appConfig.window || {};
    const pageWindowConfig=pageConfig || {};

    //导航栏背景颜色
    result.navigationBarBackgroundColor=pageWindowConfig.navigationBarBackgroundColor || appWindowConfig.navigationBarBackgroundColor || '#ffffff';

    //导航栏文字
    result.navigationBarTitleText=pageWindowConfig.navigationBarTitleText || appWindowConfig.navigationBarTitleText || '';

    //导航栏文字颜色
    result.navigationBarTextStyle=pageWindowConfig.navigationBarTextStyle || appWindowConfig.navigationBarTextStyle || 'white';

    //窗口背景色
    result.backgroundColor=pageWindowConfig.backgroundColor || appWindowConfig.backgroundColor || '#ffffff';

    //导航栏样式，仅支持以下值：default 默认样式custom 自定义导航栏，只保留右上角胶囊按钮。
    result.navigationStyle=pageWindowConfig.navigationStyle || appWindowConfig.navigationStyle || 'default';

    return result;
}